/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vue;

import application.FicheMediaController;
import application.GestionArtistesController;
import dao.MediaDAO;
import dao.MediaDAOAuteur;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import media.Media;
import media.MediaAuteur;
import media.Musique;

/**
 *
 * @author Florian Minin & Khémon Beh
 */
public class FicheMediaMusique extends FicheMediaAbstract {

    private MediaDAOAuteur dao;
    private JTextField txtFieldAlbum;
    private JTextField txtFieldAnnee;
    private JTextField txtFieldTitre;
    private JButton btnEditerAuteurs;
    private JLabel lblValAuteurs;

    public FicheMediaMusique(Musique musique) {
        super(musique);
        initComponentsGenerique();
        initComponents();
    }

    public FicheMediaMusique() {
        super(new Musique());
        initComponentsGenerique();
        initComponents();
    }

    private void initComponents() {
        JLabel lblTitre = new JLabel("Titre");
        lblTitre.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblTitre.setBounds(18, 291, 61, 16);
        pnlPrincipal.add(lblTitre);

        txtFieldTitre = new JTextField();
        txtFieldTitre.setBounds(18, 303, 501, 28);
        pnlPrincipal.add(txtFieldTitre);
        txtFieldTitre.setColumns(10);

        JLabel lblAlbum = new JLabel("Album");
        lblAlbum.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblAlbum.setBounds(18, 330, 61, 16);
        pnlPrincipal.add(lblAlbum);

        txtFieldAlbum = new JTextField();
        txtFieldAlbum.setBounds(18, 343, 501, 28);
        pnlPrincipal.add(txtFieldAlbum);
        txtFieldAlbum.setColumns(10);

        JLabel lblAnnee = new JLabel("Année de sortie");
        lblAnnee.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblAnnee.setBounds(280, 249, 116, 16);
        pnlPrincipal.add(lblAnnee);

        txtFieldAnnee = new JTextField();
        txtFieldAnnee.setColumns(10);
        txtFieldAnnee.setBounds(276, 261, 243, 28);
        pnlPrincipal.add(txtFieldAnnee);

        JLabel lblArtistes = new JLabel("Artistes");
        lblArtistes.setFont(new Font("Lucida Grande", Font.BOLD, 13));
        lblArtistes.setBounds(18, 370, 61, 16);
        pnlPrincipal.add(lblArtistes);

        btnEditerAuteurs = new JButton("Editer les auteurs");
        btnEditerAuteurs.setBounds(337, 412, 182, 29);
        pnlPrincipal.add(btnEditerAuteurs);

        lblValAuteurs = new JLabel("");
        lblValAuteurs.setBounds(18, 398, 295, 54);
        pnlPrincipal.add(lblValAuteurs);
        setToModeConsultation();
    }

    public void abonnementComponents(FicheMediaController ctrl) {
        btnModifier.addActionListener(ctrl);
        btnSauvegarder.addActionListener(ctrl);
        btnEditerAuteurs.addActionListener(ctrl);
    }

    @Override
    public void setToModeModification() {
        super.setToModeModification();
        txtFieldAlbum.setEnabled(true);
        txtFieldAnnee.setEnabled(true);
        txtFieldTitre.setEnabled(true);
    }

    @Override
    public void setToModeConsultation() {
        super.setToModeConsultation();
        txtFieldAlbum.setEnabled(false);
        txtFieldAnnee.setEnabled(false);
        txtFieldTitre.setEnabled(false);
    }

    @Override
    public void saveModification() {
        Musique musique = (Musique) media;
        musique.setAnnee(txtFieldAnnee.getText());
        musique.setTitre(txtFieldTitre.getText());
        musique.setAlbum(txtFieldAlbum.getText());
        musique.setDescription(jtxtValDescription.getText());
        musique.setNote(comboBoxNote.getSelectedIndex());
        lblValAuteurs.setText(musique.afficherAuteurs());
        this.setTitle("Fiche Musique : " + musique.getTitre());
    }

    @Override
    public void chargerMedia(Media media) {
        super.chargerMedia(media);
        Musique musique = (Musique) media;
        txtFieldAlbum.setText(musique.getAlbum());
        txtFieldAnnee.setText(musique.getAnnee());
        txtFieldTitre.setText(musique.getTitre());
        lblValAuteurs.setText(musique.afficherAuteurs());
        setTitle("Fiche Musique : " + musique.getTitre());
    }

    public void ouvreGestionAuteur(MediaDAOAuteur dao) {
        if(vueGestion != null){
            vueGestion.dispose();
        }
        vueGestion = new VueGestionAuteur();
        GestionArtistesController controller = new GestionArtistesController(vueGestion, dao, (MediaAuteur) media);
        vueGestion.abonnerComponents(controller);
        vueGestion.setVisible(true);
        controller.chargementDonnees();
    }

    public void associerDAO(MediaDAO dao) {
        this.dao = (MediaDAOAuteur) dao;
    }

    public MediaDAO getDAO(){
        return dao;
    }
}
